#pragma once


class EmptyXAPO: public CXAPOParametersBase
{
public:
	EmptyXAPO(const XAPO_REGISTRATION_PROPERTIES *pRegProperties, BYTE* pParameters, UINT32 ParametersSize, BOOL fProducer, WAVEFORMATEXTENSIBLE* pwfx);
	virtual ~EmptyXAPO(void);

	STDMETHOD(LockForProcess) (UINT32 InputLockedParameterCount,
          const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,
          UINT32 OutputLockedParameterCount,
          const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters);

	STDMETHOD_(void, Process)(UINT32 InputProcessParameterCount,
           const XAPO_PROCESS_BUFFER_PARAMETERS* pInputProcessParameters,
           UINT32 OutputProcessParameterCount,
           XAPO_PROCESS_BUFFER_PARAMETERS* pOutputProcessParameters,
           BOOL IsEnabled);

	
  STDMETHOD_(void, GetParameters)  ( void *pParameters, UINT32 ParametersByteSize ) {
    assert(ParametersByteSize == 4); 
      }
  
  STDMETHOD_(void, SetParameters)  (const void *pParameters, UINT32 ParametersByteSize ) {
    assert(ParametersByteSize == 4); 
  }

private:
	int m_uChannels;
	int m_uBytesPerSample;
	

};
/*



	XAUDIO2_EFFECT_DESCRIPTOR descriptor;
		descriptor.InitialState = true;
		descriptor.OutputChannels = 1;
    
		IID apoIid = {1};
		CoCreateGuid( (GUID*)(&apoIid) );
		XAPO_REGISTRATION_PROPERTIES	 rep = { apoIid, L"EmptyXAPO", L"2012", 1, 2,  XAPOBASE_DEFAULT_FLAG , 0, 1, 0, 1};
    
    
		myXAPO emptyXAPO(&rep);
		emptyXAPO.Initialize(NULL, 0);

		descriptor.pEffect = &emptyXAPO;

	

		XAUDIO2_EFFECT_CHAIN chain;
		chain.EffectCount = 1;
		chain.pEffectDescriptors = &descriptor;
	//  xaudio2Check(pSourceVoice->SetEffectChain(&chain));
		pSourceVoice->SetEffectChain(&chain);
	    emptyXAPO.Release();

	*/